home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 2 / CU Amiga Magazine's Super CD-ROM 02 (1996)(EMAP Images)(GB)[!][issue 1996-04].iso / magazine / amiga_e / elist.src.archive / 000006_crash!kirk.safb.af.mil!BWILLS_Thu, 10 Jun 93 14:08:11 PST.msg < prev    next >
Text File  |  1993-08-31  |  3KB  |  86 lines

  1. Received: by bkhouse.cts.com (V1.16/Amiga)
  2.     id AA00000; Thu, 10 Jun 93 14:08:11 PST
  3. Received: from kirk.safb.af.mil by crash.cts.com with smtp
  4.     (Smail3.1.28.1 #15) id m0o3s2N-0000tEC; Thu, 10 Jun 93 12:11 PDT
  5. Message-Id: <m0o3s2N-0000tEC@crash.cts.com>
  6. Date: 10 Jun 93 14:07:00 CST
  7. From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
  8. To: "amigae" <amigae@bkhouse.cts.com>
  9. Subject: LIST1.E (re:  Son Le's linked list questions)
  10.  
  11. /* LIST1.E - In response to Son Le's linked list questions.  More complete */
  12. /* discussion appears at the end of LIST2.E.                               */
  13.  
  14. /*
  15. Does anyone know if you can use MapList, ForAll, Exists list functions on
  16. linked lists? Also how are linked lists stored in memory and finally, what's
  17. the difference between these two examples:
  18. */
  19. PROC main ()
  20.   DEF a [3] : STRING,
  21.       b [3] : STRING,
  22.       c [3] : STRING,
  23.       d [3] : STRING
  24.  
  25. /* NOTE:  if you make a,b,c,d pointers and create them as follows, this
  26.    program will do exactly the same thing.
  27.   a := String (3)
  28.   b := String (3)
  29.   c := String (3)
  30.   d := String (3)
  31. */
  32.   StrCopy (a, 'aaa', ALL)
  33.   StrCopy (b, 'bbb', ALL)
  34.   StrCopy (c, 'ccc', ALL)
  35.   StrCopy (d, 'ddd', ALL)
  36.  
  37.   /* Note:  you are about to lose the string pointed to by d! */
  38.  
  39.   /*------------*/
  40.   d:=Link(c,NIL)
  41.   /*------------*/
  42.  
  43.   /* c.next points to NIL (the initial value); d now points to the string */
  44.   /* 'ccc' because Link() returns the address of c.                       */
  45.   WriteF ('1.  c=\s d=\s\n', c, d)
  46.  
  47.   /*----------*/
  48.   d:=Link(b,c)
  49.   /*----------*/
  50.  
  51.   /* b.next points to the string 'ccc'; d now points to the string 'bbb' */
  52.   /* because Link() returns the address of b.                            */
  53.   WriteF ('2.  b=\s c=\s b.next=\s d=\s\n', b, c, Next(b), d)
  54.  
  55.   /*----------*/
  56.   d:=Link(a,b)
  57.   /*----------*/
  58.  
  59.   /* a.next points to the string 'bbb'; d now points to the string 'aaa' */
  60.   /* because Link() returns the address of a.                            */
  61.   WriteF ('3.  a=\s b=\s a.next=\s d=\s\n', a, b, Next(a), d)
  62.  
  63.  
  64.   /* Finally, everything that can be gotten from the linked strings:  */
  65.   WriteF ('a=\s  -> \s\n', a, Next(a))
  66.   WriteF ('b=\s  -> \s\n', b, Next(b))
  67.   WriteF ('c=\s  -> \s\n', c, IF Next(c)=NIL THEN 'NIL' ELSE Next(c))
  68.   WriteF ('d=\s  -> \s\n', d, Next(d))
  69.  
  70.   /*************************************************************************/
  71.   /* Output looks like this:                                               */
  72.   /*                                                                       */
  73.   /* a=aaa  -> bbb                                                         */
  74.   /* b=bbb  -> ccc                                                         */
  75.   /* c=ccc  -> NIL                                                         */
  76.   /* d=aaa  -> bbb                                                         */
  77.   /*                                                                       */
  78.   /* If you compare the output of this program to that of list2.e you will */
  79.   /* see that the strings pointed to by a,b,c,d have the same values, but  */
  80.   /* the strings that they are linked to are not the same.                 */
  81.   /*************************************************************************/
  82.  
  83.   CleanUp (0)
  84. ENDPROC
  85.  
  86. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%